Multi-rendering has three primary performance objectives. First, as stated in the goals, no measurable overhead should be added when not using multi-rendering. X server benchmarking of core X rendering using x11perf shows no measurable performance differences between our X server with multi-rendering support and our X server compiled without multi-rendering support.
The second performance objective is that indirect OpenGL rendering should add minimal overhead compared with direct rendering. To measure the overhead added by indirect rendering, we implemented a benchmark that renders an animated, lighted, shaded, depth buffered hierarchical dinosaur model composed of 261 medium-sized polygons per frame. The 300 by 300 pixel rendering window is cleared every frame. We measured the number of dinosaurs that could be rendered per second (a.k.a. FlyntStones).
The dinosaur can be rendered using display lists or in immediate mode. Also the benchmark can be executed using either direct or indirect rendering. When performing indirect rendering using display lists, the client down loads the display lists required to render the dinosaur into the X server; each frame consists of rotating the model-view matrix and executing the dinosaur display list. The time to download the display list is not included in the measurements. The X protocol overhead per frame should be marginal in this case.
When performing indirect, immediate mode rendering, all of the OpenGL commands needed to render the dinosaur must be sent via the X protocol to the X server for execution. The X protocol overhead per frame will be higher than the overhead using display lists.
Table 1: FlyntStones of OpenGL rendering performance,
comparing direct and indirect for both display list and immediate
mode rendering.
Table 1 presents performance results spanning the breadth of SGI's current product line [7,2]. The overhead of multi-rendering when using display lists appears to be under 15%, except in the case of the multi-processor system where the overhead is a negligible 2% - demonstrating the ability of multi-rendering to utilize multiple processors. As expected, the immediate mode results show a higher overhead due to the added transport and dispatching overhead inherent in immediate mode OpenGL command execution. The penalty for indirect, immediate mode rendering is higher for faster and relatively less host-limited systems like the Onyx.
The final performance objective is an assurance that X server interactivity has indeed been maintained using multi-rendering. Tests running six or more continuously animated, indirect rendering, immediate mode OpenGL programs still allow interactive movement of windows using the window manager, typing into shells proceeds at normal rates, and pop-up menus continue to activate in under a second. The same applies to PEX programs.